package com
import com.Cliente

import com.ContaContabil

/**
 * Descrição: Metodo que cria uma conta contabil para um cliente
 * @params recebe como parametro um cliente
 * @author alex
 * @return 
 */

class CriaContaContabilService {
	
	
	
	boolean transactional = false

	public boolean criaContaContabilCliente(Cliente cliente){
		boolean retorno = false

		ContaContabil contaContabil = new ContaContabil()

		contaContabil.descricao = "Conta Contabil cliente "+cliente.nome
		contaContabil.natureza = ContaContabil.CREDITO
		contaContabil.protegido = false
		contaContabil.resultado = false
		contaContabil.codigo = "000"
		contaContabil.pai = null

		contaContabil.save(flush: true)

		println "AQUI É uma conta: " + contaContabil

		if (cliente.save(flush: true)){
			contaContabil.codigo = ContaContabil.CLIENTE + "-" + cliente.id.toString()
			cliente.contaContabil = contaContabil
			retorno = true
		}
	
		return retorno
	}

	/**
	 * Descrição: metodo q cria conta contabil para fornecedor
	 * @author henrique
	 * @param fornecedor
	 * @return boolean true: sucesso, false: falha
	 */
	public boolean criaContaContabilFornecedor(Fornecedor fornecedor){
		boolean retorno = false

		ContaContabil contaContabil = new ContaContabil()

		//registra atributos da contacontabil para fornecedor
	
		

		contaContabil.descricao = "Conta Contabil Fornecedor " + fornecedor.nome
		contaContabil.natureza = ContaContabil.CREDITO
		contaContabil.protegido = false
		contaContabil.resultado = false
		contaContabil.codigo = "000"
		contaContabil.pai = null
	
		contaContabil.save()

		if (fornecedor.save(flush: true)){
			contaContabil.codigo = ContaContabil.FORNECEDOR + "-" + fornecedor.id.toString()
			retorno = true
			fornecedor.contaContabil = contaContabil
		}

		return retorno
	}
	
	/**
	 * 
	 * @param contaCorente
	 * @return
	 */
	public boolean criaContaContabilContaCorrente(ContasCorrente contaCorente){
		boolean retorno = false
		ContaContabil contaContabil = new ContaContabil()
		
		contaContabil.descricao = "Conta Contabil Conta Corrente " + contaCorente.banco
		contaContabil.natureza = ContaContabil.CREDITO
		contaContabil.protegido = false
		contaContabil.resultado = false
		contaContabil.codigo = "000"
		contaContabil.pai = null
		
		contaContabil.save()
		
		if (contaCorente.save(flush: true)){
			
			contaContabil.codigo = ContaContabil.CONTA_CORRENTE + "-" + contaCorente.id.toString()
			retorno = true
			contaCorente.contaContabil = contaContabil
		}
		
		return retorno		
	}
	
}
